"""
·元组是有序的，元组中的元素按照它们的顺序存储，并且可以通过索引进行访问和引用。
·元组是不可变的，一旦定义后，元组中的数据不可以进行添加，修改和删除等操作
·元组是异构的，可包含不同类型元素，如整数，小数，字符串，
元组成为一种有效的数据结构，用于存储多种不同类型的元素
"""


# 元组操作
def tuple_info():
    tup1 = (1, 2, 3, 4, 5, 6, 7, 8, 9, "hello", (1, 2, 3))
    print(tup1)
    print(type(tup1))
    tup2 = (1,)
    print(tup2)
    print(type(tup2))
    tup3 = ()
    print(tup3)
    print(type(tup3))
    # 使用构造方法定义元组
    tup4 = tuple("hello")
    print(tup4)
    tup5 = tuple([1, 3, 4, 5, 'm', 'n'])
    print(tup5)
    tup6 = tuple((1, 2, 3, 'as', 'b'))
    print(tup6)
    # 使用下标访问元组元素
    tup7 = (1, 2, 3, 'a', 'b', True, (11, 22, 33))
    print(tup7, type(tup7))
    print(tup7[0])
    print(tup7[5])
#   print(tup7[8]) 越界
    print(tup7[6][2])
# 元组切片 tuple[start:stop:step]start不传默认0,stop不传默认最大，step默认1
    tup8 = (1,2,3,4,5,6,6,7,7,7,8,9,0)
    print(tup8,type(tup8))
    print(tup8[0:5])
    print(tup8[3:8:1])
    print(tup8[3:8:2])
    print(tup8[:5])
    print(tup8[3:])
    print(tup8[::-1])
    print(tup8[-1:-5:-1])
    """
    元组的特点
    有序性：元组中的元素按照添加顺序进行存储，并且可以通过索引来访问和引用。这意味着元组中的元素保持其原始顺序，不会发生改变。
    不可变性：元组的元素是不可修改、删除或添加的。
    """
    # 元组常用方法
    # len统计元组长度，获取元组元素个数,返回一个数字
    l = len(tup8)
    print(l)
    # count() ,统计指定元素在元组中的个数
    count=tup8.count(6)
    print(count)
    # index() 在元组中查找 value 第一次出现的下标。
    # 如果指定了范围，则仅在指定范围内查找，如果查找的数据在元组中不存在，
    # 会抛出一个错误。 格式：index(value, start,stop)
    tup9 = (1, 2, 3, 4, 5, 6, 6, 7, 7, 7, 8, 9, 0,7)
    num1=tup9.index(7)
    print(num1)
    num2 = tup9[7:len(tup9)].index(0)
    print(num2)
tuple_info()
